From: Florian Müllner Date: Fri, 30 Jul 2021 08:12:11 +0000 (+0200) Subject: dbusServices/extensions: Give extensions access to the prefs window X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~530^2^2~93 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e07bc62fbd528010b6c7cbc0cdbf43c7863c9e4d;p=gnome-shell.git dbusServices/extensions: Give extensions access to the prefs window The current preference API - buildPrefsWidget() - predates client-side decorations. While extension authors have been finding ways around the limitation of not having access to the window/titlebar, the change to the new Adwaita API seems like a good time for an updated API that officially provides that access (as far as allowed by libadwaita). Part-of: --- diff --git a/js/dbusServices/extensions/extensionPrefsDialog.js b/js/dbusServices/extensions/extensionPrefsDialog.js index 85e1364da..4e90da4e7 100644 --- a/js/dbusServices/extensions/extensionPrefsDialog.js +++ b/js/dbusServices/extensions/extensionPrefsDialog.js @@ -23,9 +23,16 @@ var ExtensionPrefsDialog = GObject.registerClass({ const prefsModule = extension.imports.prefs; prefsModule.init(extension.metadata); - const widget = prefsModule.buildPrefsWidget(); - const page = this._wrapWidget(widget); - this.add(page); + if (prefsModule.fillPreferencesWindow) { + prefsModule.fillPreferencesWindow(this); + + if (!this.visible_page) + throw new Error('Extension did not provide any UI'); + } else { + const widget = prefsModule.buildPrefsWidget(); + const page = this._wrapWidget(widget); + this.add(page); + } } catch (e) { this._showErrorPage(e); logError(e, 'Failed to open preferences');